package com.zoespeer.food_delivery_comment_api.config;

import com.zoespeer.food_delivery_comment_api.interceptor.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Web配置类：注册LoginInterceptor，配置拦截/放行接口
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    // 从Spring容器中注入LoginInterceptor（已自动包含RedisTemplate依赖）
    @Autowired
    private LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册Token拦截器（使用注入的实例，而非手动new）
        registry.addInterceptor(loginInterceptor)
                // 需要拦截的接口（需登录才能访问）
                .addPathPatterns(
                        "/api/restaurant/addCanteen",       // 添加餐厅
                        "/api/comment/publishCommand",      // 发布评论
                        "/api/file/uploadFile",             // 上传文件/视频
                        "/api/review/deleteReview",         // 删除评论
                        "/api/favorite/cancelLike",         // 取消收藏
                        "/api/user/changeMessage",          // 修改个人信息
                        "/api/user/deleteMyself",           // 注销账号
                        "/api/user/changePassword",         // 修改密码
                               // 获取我的评论

                        "/api/user/logout" // <--- 在这里添加这一行// 获取我的收藏
                )
                // 放行的接口（无需登录即可访问）
                .excludePathPatterns(
                        "/api/user/login",                  // 登录
                        "/api/user/register",               // 注册
                        "/api/user/sendCheckCode",          // 发送验证码
                        "/api/review/getMyReview",
                        "/api/favorite/getMyLike",
                        "/api/restaurant/list",             // 获取餐厅列表
                        "/api/restaurant/detail",           // 获取餐厅详情
                        "/api/user/getUserInfo"             // 获取用户信息（需userId参数，无需登录）
                        //"/api/user/guessLike"               // 猜你喜欢（可选）
                );
    }
}